//
// Created by Javery Chiang on 2024/6/30.
//
#pragma once

#include <memory>
#include <string>
#include <iostream>
#include <vector>

using namespace std;

template<typename T>
void print_vector(const std::vector<T> &vec) {
    for (const auto &item: vec)
        std::cout << item << " ";
    std::cout << std::endl;
}

class Item {
public:
    Item() {}

    explicit Item(int data);

    explicit Item(const string &str);

    bool operator<(const Item &rhs) const;

    bool operator>(const Item &rhs) const;

    bool operator<=(const Item &rhs) const;

    bool operator>=(const Item &rhs) const;

    int getData() const;

    void setData(int data);

    const string &getStr() const;

    void setStr(const string &str);

    virtual ~Item();

    friend std::ostream &operator<<(std::ostream &os, const Item &obj);

private:
    int data;
    string str;

};



